10.3 asyncioモジュール
#asyncio
イベントループを利用した並行処理
シングルスレッドでも並行処理を実現できる
コードを同期処理のように記述できる
コルーチン
サブルーチン(=関数):呼び出されると最後まで一気に実行される
コルーチンは処理の途中で中断、再開ができる性質を持ちます。(Kindle の位置No.4720)
コルーチンでHTTPリクエスト送信
コルーチンを中断
別のコルーチンを動かすことでCPUリソースを活用
(感想 ジェネレータっぽい。async await の向こう側)
ジェネレータベースのコルーチンはすでにdeprecated(非推奨)であり、Python3.10で削除される予定です。(注16)
https://docs.python.org/ja/3/library/asyncio-task.html#generator-based-coroutines
2022/08時点では3.11で削除予定とのこと
「実装で知るasyncio」を聴いてコルーチンを全く分かっていないことに気づいたを思い出した
Pythonでコルーチンを実装
トランスポート:さまざまな通信を行うためのクラス
https://docs.python.org/ja/3/library/asyncio-protocol.html#transports
asyncio は TCP, UDP, SSL, およびサブプロセスパイプのトランスポートを実装しています。
HTTPは? 👉 aiohttp!!
以下積ん読
コルーチンを実行する方法は3つ用意されています。
1つ目はasyncio.run()に渡す方法、
2つ目はコルーチンの内部でawaitコルーチンとする方法、
そして3つ目がこれから説明するタスクを作成して実行する方法です。(Kindle の位置No.4801-4803)
タスク 👉 Django 3.2 ASGI対応 - こわくない asyncio 基礎とasync viewの使い所